package com.lfc.myframe.utils;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;

import androidx.annotation.NonNull;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.signature.ObjectKey;
import com.lfc.myframe.R;

import java.util.concurrent.ExecutionException;


/**
 * detail: Glide 工具类
 *
 * @author Ttt
 * <pre>
 *     <p></p>
 *     init: GlideUtils.init(getApplicationContext());
 *     use modify: 修改 defaultOptions() 配置、以及加载默认图片资源
 *     <p></p>
 *     Glide 详细使用
 *     @see <a href="https://www.jianshu.com/p/7cfe2653a1fb"/>
 *     Glide 文档
 *     @see <a href="https://muyangmin.github.io/glide-docs-cn"/>
 *     解决 Glide 加载图片闪烁的问题 ( 圆角处理 ) - transform(new RoundedCorners(xx));
 *     @see <a href="https://blog.csdn.net/andcisco/article/details/96487800"/>
 * </pre>
 */
public final class GlideUtils {

    /**
     * 1
     *
     * @param ctx
     * @param img
     * @param Type 0  宽广告图   1 用户头像（圆形）   2 轮播图  3方形
     */
    public static void ShowImgHead(Context ctx, ImageView img, String img_url, int Type) {
//        if (TextUtils.isEmpty(img_url))
//            img_url = "error";
        RequestOptions options = getGlideOptions(Type);
        switch (Type) {
            case 0:
                Glide.with(ctx).asBitmap().load(img_url).thumbnail(0.3f).apply(options).into(img);
                break;
            case 1:
                Glide.with(ctx).asBitmap().load(img_url).thumbnail(0.3f).apply(options).into(img);
                break;
            case 2:
//             轮播图
                Glide.with(ctx).asBitmap().load(img_url).thumbnail(0.3f).apply(options).into(img);

                break;
        }
    }

    @NonNull
    public static RequestOptions getGlideOptions() {
        return getGlideOptions(1);
    }

    /**
     * @param type 类型 1  等待图片
     * @return
     */
    @NonNull
    public static RequestOptions getGlideOptions(int type) {
        int drawableid = R.drawable.logo_wait;
        switch (type) {
            case 2:
                drawableid = R.drawable.logo_wait;
                break;
            case 1:
            case 3:
            default:
                drawableid = R.drawable.logo_wait;
                break;

        }
        return new RequestOptions()
                .placeholder(drawableid)
                .error(drawableid)
                .centerCrop()
                .signature(new ObjectKey(System.currentTimeMillis())); // 重点在这行;
    }

    /**
     * 这是一个耗时的操作需要异步处理
     *
     * @param url 通过URL得到 Drawable
     * @return
     */
    public static Drawable getDrawableGlide(Context ctx, String url) {
        try {
            return Glide.with(ctx)
                    .load(url)
                    .submit()
                    .get();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 这是一个耗时的操作需要异步处理
     *
     * @param url 通过URL得到 Bitmap
     * @return
     */
    public static Bitmap getBitmapGlide(Context ctx, String url) {
        try {
            return Glide.with(ctx)
                    .asBitmap()
                    .load(url)
                    .submit()
                    .get();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return null;
    }


}